﻿using System;
using Mx.Ipn.Escom.TT20080015.Modelo.Datos;

namespace Mx.Ipn.Escom.TT20080015.Modelo.Datos
{
    /// <summary>
    /// Clase Usuario que hereda de la clase Persona.
    /// </summary>
    public class Usuario : Persona
    {
        #region Atributos
        private string username;
        private string claveAcceso;
        private string correoElectronico;
        private string perfil;
        #endregion

        public Usuario(){}

        /// <summary>
        /// Constructor de la clase Usuario.
        /// </summary>
        /// <param name="id">Identificador del usuario.</param>
        /// <param name="nombre">Nombre del usurio.</param>
        /// <param name="aPaterno">Apellido paterno del usuario.</param>
        /// <param name="aMaterno">Apellido materno del usuario.</param>
        /// <param name="username">Nombre de usuario para identificarse en el sistema.</param>
        /// <param name="claveAcceso">Clave de acceso para identificarse en el sistema.</param>
        /// <param name="correoElectronico">Dirección de correo electrónico del usuario.</param>
        /// <param name="perfil">Tipo de perfil con el que se puede registrar: Administrador o Especialista.</param>
        public Usuario(int id, string nombre, string aPaterno, string aMaterno, string username, string claveAcceso, string correoElectronico, string perfil)
            : base(id, nombre, aPaterno, aMaterno)
        {
            this.username = username;
            this.claveAcceso = claveAcceso;
            this.correoElectronico = correoElectronico;
            this.perfil = perfil;
        }

        /// <summary>
        /// El método valida los datos del usuario
        /// </summary>
        /// <param name="usuario">Es el nombre de usuario que ingresa el usuario</param>
        /// <param name="clave">Es la clave de acceso que ingresa el usuario</param>
        /// <returns></returns>
        public bool validar(string usuario, string clave)
        {
            return (username.Equals(usuario) && claveAcceso.Equals(clave));
        }

        #region Propiedades
        /// <summary>
        /// Almacena el nombre de usuario de los usuarios.
        /// </summary>
        /// <value>Nombre de usuario del usuario.</value>
        public string Username
        {
            get { return username; }
            set { this.username = value; }
        }

        /// <summary>
        /// Almacena la clave de acceso del usuario.
        /// </summary>
        /// <value>Clave de acceso del usuario.</value>
        public string ClaveAcceso
        {
            get { return claveAcceso; }
            set { this.claveAcceso = value; }
        }

        /// <summary>
        /// Almacena la dirección de correo electrónico del usuario.
        /// </summary>
        /// <value>Dirección de correo electrónico del usuario.</value>
        public string CorreoElectronico
        {
            get { return correoElectronico; }
            set { this.correoElectronico = value; }
        }

        /// <summary>
        ///Almacena el perfil del usuario. 
        /// </summary>
        /// <value>Perfil de usuario: Administrador o Especialista.</value>
        public string Perfil
        {
            get { return perfil; }
            set { this.perfil = value; }
        }
        #endregion

        /// <summary>
        /// Sobreescribe el método toString de la clase Object.
        /// </summary>
        /// <returns>Cadena obtenida del método homónimo de la clase base, adicionandole el nombre de usuario,
        /// la clave de acceso, el correo electrónico y el perfil del usuario.</returns>
        public override string ToString()
        {
            return "(" + base.ToString() + ",'" + username + "','" + 
                claveAcceso + "','" +  correoElectronico + "','" + perfil + "')";
        }
    }
}
